using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._TopographicProductionTools._Workflow._DataManagement
{
    /// <summary>
    /// <para>Update Task Group Metrics</para>
    /// <para>Updates and summarizes task group metrics that are part of the standard Topographic Workflow deployment of Workflow Manager (Classic).</para>
    /// <para>更新和汇总任务组指标，这些指标是 Workflow Manager （Classic） 标准地形工作流部署的一部分。</para>
    /// </summary>    
    [DisplayName("Update Task Group Metrics")]
    public class UpdateTaskGroupMetrics : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public UpdateTaskGroupMetrics()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_job_id">
        /// <para>Job ID</para>
        /// <para>The job ID of the job that will be updated.</para>
        /// <para>将更新的作业的作业 ID。</para>
        /// </param>
        public UpdateTaskGroupMetrics(long? _job_id)
        {
            this._job_id = _job_id;
        }
        public override string ToolboxName => "Topographic Production Tools";

        public override string ToolName => "Update Task Group Metrics";

        public override string CallName => "topographic.UpdateTaskGroupMetrics";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_job_id, _status_layer, _status_field, _database_path, _updated_job_id, _updated_status_layer];

        /// <summary>
        /// <para>Job ID</para>
        /// <para>The job ID of the job that will be updated.</para>
        /// <para>将更新的作业的作业 ID。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Job ID")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public long? _job_id { get; set; }


        /// <summary>
        /// <para>Status Layer</para>
        /// <para>The feature class containing status polygons that keep track of the last time work occurred over an extent. Only use this parameter to update a polygon feature class that is not the standard status polygons created by the Topographic Workflow.</para>
        /// <para>包含状态面的要素类，用于跟踪上次在范围内进行工时的情况。仅使用此参数更新不是地形工作流创建的标准状态面的面要素类。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Status Layer")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _status_layer { get; set; } = null;


        /// <summary>
        /// <para>Status Field</para>
        /// <para>The text or date field in which the last modified date will be stored. The parameter is only enable, if a Status Layer value is defined.</para>
        /// <para>将存储上次修改日期的文本或日期字段。仅当定义了状态图层值时，该参数才会启用。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Status Field")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _status_field { get; set; } = null;


        /// <summary>
        /// <para>Input Database Path</para>
        /// <para>The Workflow Manager (Classic) database connection file (.jtc) that contains the job information. If no connection file is specified, the current default Workflow Manager (Classic) database will be used.</para>
        /// <para>包含作业信息的 Workflow Manager （Classic） 数据库连接文件 （.jtc）。如果未指定连接文件，则将使用当前默认的 Workflow Manager （Classic） 数据库。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Database Path")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _database_path { get; set; } = null;


        /// <summary>
        /// <para>Updated Job ID</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Updated Job ID")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public long _updated_job_id { get; set; }


        /// <summary>
        /// <para>Updated Status Layer</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Updated Status Layer")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _updated_status_layer { get; set; }


        public UpdateTaskGroupMetrics SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}